C51怎么把负数变成正数、
C51 怎么把负数变成正数、 -
首先,读取温度的变量应该定义成带符号数,这样就有正负数之分。其次,在显示时,先判断温度的正负,温度>=0为正,温度<0为负,最好再设置一个负数标志位,备其它程再用温度值时,根据标志位判断正负。把负温度变成正数才能显示,温度=0-温度。并在温度前显示出负号-。
对于负数,在右移时,高位自动补1,例如原来10100000,右移1位就是11010000,右移两位就是11101000,你右移了7次,那就是11111111,0xff+0x30,因为只有一个字节,所以结果是0x2f,也就是‘’的ASCII码。所以,我个人喜欢在定义时使用unsigned 还有呢?
首先,读取温度的变量应该定义成带符号数,这样就有正负数之分。其次,在显示时,先判断温度的正负,温度>=0为正,温度<0为负,最好再设置一个负数标志位,备其它程再用温度值时,根据标志位判断正负。把负温度变成正数才能显示,温度=0-温度。并在温度前显示出负号-。
对于负数,在右移时,高位自动补1,例如原来10100000,右移1位就是11010000,右移两位就是11101000,你右移了7次,那就是11111111,0xff+0x30,因为只有一个字节,所以结果是0x2f,也就是‘’的ASCII码。所以,我个人喜欢在定义时使用unsigned 还有呢?
比如你从里面得到0xf8(高字节temph),0x08(低字节templ);里面的1就是小数部分,8H=1000d 所以1*2负一次方+0*2负2次方等我继续说。+ 再比如你把它提出来之后,保存在tempdf中,执行if(tempdf>=8)tempdf=5;else tempdf=0;直接用于显示就行啦,至于负数if((temph&0xf8)!=0x00) //若温度为负等我继续说。
signed char 型的用第一个(if(shu<0))判断负数是可以的进不去,可能是没有满足shu<0这个条件,
C语言中的位运算在编程中有什么意义啊! -
IP2: 192.168.0.51 mask: 255.255.255.0 数据分别用了4个字节来表示,当你想计算子网地址的时候就用“MASK 逻辑或IP”运算,得出IP1 和IP2 属于同一个子网,当你想算这两个地址自身的时候,就用逻辑与运算,如果用算数方法速度慢逻辑复杂而且在单片机的情况下,有的复杂好了吧!